From a9e9837f54973ac45488c24e93ed34cbf20e4c66 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 16 Aug 2018 09:30:59 +0200 Subject: [PATCH] gnttab/ARM: properly implement gnttab_create_status_page() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Prevent the "BUG_ON(page_get_owner(pg) != d)" in gnttab_unpopulate_status_frames() from triggering. Reported-by: 王磊 Signed-off-by: Jan Beulich Reviewed-by: Stefano Stabellini --- xen/include/asm-arm/grant_table.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/xen/include/asm-arm/grant_table.h b/xen/include/asm-arm/grant_table.h index 756c6be2d6..5113b9156c 100644 --- a/xen/include/asm-arm/grant_table.h +++ b/xen/include/asm-arm/grant_table.h @@ -21,7 +21,6 @@ int create_grant_host_mapping(unsigned long gpaddr, mfn_t mfn, int replace_grant_host_mapping(unsigned long gpaddr, mfn_t mfn, unsigned long new_gpaddr, unsigned int flags); void gnttab_mark_dirty(struct domain *d, mfn_t mfn); -#define gnttab_create_status_page(d, t, i) do {} while (0) #define gnttab_release_host_mappings(domain) 1 /* @@ -80,6 +79,12 @@ static inline unsigned int gnttab_dom0_max(void) virt_to_page((char *)(t)->shared_raw[i]), d, SHARE_rw); \ } while ( 0 ) +#define gnttab_create_status_page(d, t, i) \ + do { \ + share_xen_page_with_guest( \ + virt_to_page((char *)(t)->status[i]), d, SHARE_rw); \ + } while ( 0 ) + #define gnttab_shared_gmfn(d, t, i) \ gfn_x(((i) >= nr_grant_frames(t)) ? INVALID_GFN : (t)->arch.shared_gfn[i]) -- 2.30.2